/**
 * 统一响应格式
 */
interface R<T = any> {
    code: number;
    msg: string;
    data: T;
}

/**
 * 响应工具类
 */
class ResponseUtils {
    /**
     * 成功响应
     * @param data 返回数据
     */
    static success<T>(data: T): R<T> {
        return {
            code: 200,
            msg: "成功",
            data,
        };
    }

    /**
     * 错误响应
     * @param msg 错误信息
     */
    static error<T>(msg: string): R<T> {
        return {
            code: 500,
            msg,
            data: null as unknown as T,
        };
    }

    /**
     * 构建响应
     * @param code 状态码
     * @param msg 返回信息
     */
    static build<T>(code: number, msg: string): R<T> {
        return {
            code,
            msg,
            data: null as unknown as T,
        };
    }

    /**
     * 构建响应（带数据）
     * @param code 状态码
     * @param msg 返回信息
     * @param data 返回数据
     */
    static buildWithData<T>(code: number, msg: string, data: T): R<T> {
        return {
            code,
            msg,
            data,
        };
    }
}

export type { R };
export { ResponseUtils };